#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
namespace Cephei.QL.Experimental.Fx
{
    /// <summary> 
	/// ! Class includes many operations needed for different applications in FX markets, which has special quoation mechanisms, since every price can be expressed in both numeraires.
	/// </summary>
    [Guid ("FE275BD7-6D6F-44d9-81AF-BBA6E01E4F73"),ComVisible(true)]
	public interface IBlackDeltaCalculator 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Double AtmStrike(QL.Experimental.Fx.DeltaVolQuote.AtmTypeEnum atmT);
        /// <summary> 
		/// 
		/// </summary>
		 Double CumD1(Double strike);
        /// <summary> 
		/// 
		/// </summary>
		 Double CumD2(Double strike);
        /// <summary> 
		/// 
		/// </summary>
		 Double DeltaFromStrike(Double strike);
        /// <summary> 
		/// 
		/// </summary>
		 Double ND1(Double strike);
        /// <summary> 
		/// 
		/// </summary>
		 Double ND2(Double strike);
        /// <summary> 
		/// 
		/// </summary>
		 IBlackDeltaCalculator SetDeltaType(QL.Experimental.Fx.DeltaVolQuote.DeltaTypeEnum dt);
        /// <summary> 
		/// 
		/// </summary>
		 IBlackDeltaCalculator SetOptionType(QL.Option.TypeEnum ot);
        /// <summary> 
		/// 
		/// </summary>
		 Double StrikeFromDelta(Double delta);
    }   

    /// <summary> 
	/// ! Class includes many operations needed for different applications in FX markets, which has special quoation mechanisms, since every price can be expressed in both numeraires. Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IBlackDeltaCalculator_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    IBlackDeltaCalculator Create (QL.Option.TypeEnum ot, QL.Experimental.Fx.DeltaVolQuote.DeltaTypeEnum dt, Double spot, Double dDiscount, Double fDiscount, Double stdDev);
    }
}

